#include "arch/loongarch.h"

void mmu_init() {   
    // 配置直接映射窗口 LOONGARCH_CSR_DMWIN0 为 0x9000 0000 0000 0011
    asm volatile(
		"li.d  $t0, 0x9000000000000011\n" 
		"csrwr $t0, 0x180\n"
	);    
    // 特别需要注意写的时候必须传入 unsigned，后面加 U 也行
    // 初始化 CSR.CRMD: PLV=0, IE=0, PG=1 开启分页
    w_csr_crmd((unsigned int)0xb0);
    // 初始化 CSR.PRMD: PLV=0, PIE=0, PWE=0
    w_csr_prmd((unsigned int)0x00); 
	// 清除 TLB 所有页表项
    asm volatile("invtlb 0x0, $zero, $zero\n");
}
